Address Translation

ABSTRACT

An apparatus, method, system, and computer-readable medium are described for permitting communications between devices complying with different communication protocols or versions. For example, a computing device may store a map indicative of associations between one or more tunnels or channels and one or more destination addresses. In some examples, a destination address may be associated with a user device. One or more messages may include an address that may be extracted by a device, such as a router, to determine which channel to use in transmitting the message to the user device. One or more messages may include an indication of a channel that may be extracted by the device to determine a destination address of the message.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No. 14/634,187, filed Feb. 27, 2015, entitled “Address Translation”, which is a continuation of U.S. patent application Ser. No. 13/353,439, filed Jan. 19, 2012, entitled “Address Translation” (now U.S. Pat. No. 9,014,189 issued on Apr. 21, 2015), and each of which is incorporated in its entirety by reference herein.

BACKGROUND

Communications between two or more devices may be implemented or facilitated via the use of addresses. For example, IPv4 communications support thirty-two (32) bit addresses. Due to the growth and expansion of communication networks, and more particularly, the number of devices that now communicate over networks like the Internet, additional communication protocols have been introduced and utilized. For example, IPv6 utilizes one hundred twenty eight (128) bit addresses, thereby expanding the number of available addresses.

Transitioning communications from a first type (e.g., a first version of a protocol) to a second type (e.g., a second version of a protocol), such as transitioning from IPv4 to IPv6 communications, may be cumbersome. For example, some new or legacy devices, such as legacy hosts, routers, and user devices might not be configured to support IPv6 communications. Given the extent and prevalence of such devices, device makers and network and service providers may be reluctant to incur the costs associated with the transition. Such reluctance may delay the advancement and progress of IPv6 compliant communications. Moreover, even assuming that device makers and network or service providers might otherwise be inclined to transition to IPv6 communications, the providers might not have access or control over such communications, devices, or equipment, thereby potentially requiring the providers to continue to support IPv4 communications during a transition to IPv6 communications. The foregoing shortcomings are identified by this disclosure, and address below.

SUMMARY

This summary is not intended to identify critical or essential features of the disclosure provided herein, but instead merely summarizes certain features and variations thereof.

In some embodiments, a device may operate as a proxy for converting data traffic according to a first communication type (e.g., IPv4 data packets) into traffic according to a second communication type (e.g., IPv6 data packets), and vice versa. In some embodiments, the device may serve as an interface between two or more other devices or communication networks, where the two or more communication networks may adhere to different communication types, protocols, standards, etc.

In some embodiments, a device may receive one or more messages from a client device. The one or more received messages may be indicative of a request for service. The one or more received messages may be indicative of, or be interpreted as, a request to be enrolled in one or more service groups.

In some embodiments, a device may receive data intended for one or more destinations. The data received at the device may adhere to a first communication type. The one or more destinations may comprise one or more user or client devices. In some embodiments, the device may maintain a table to facilitate forwarding or transmitting the data as part of a tunnel or channel (e.g., a multicast tunnel or channel). The table may map a destination address to one or more tunnel interfaces. In some embodiments, the device may transmit or forward the received data to one or more destination addresses using one or more tunnels. In some embodiments, the transmitted or forwarded data may be directed to the destination addresses using a second communication type.

Other details and features will also be described in the sections that follow.

BRIEF DESCRIPTION OF THE DRAWINGS

Some features herein are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements.

FIG. 1 illustrates an example information distribution network.

FIG. 2 illustrates an example computing device on which the various elements described herein can be implemented.

FIG. 3 illustrates an architecture demonstrating one or more aspects of this disclosure.

FIG. 4 illustrates a method demonstrating one or more aspects of this disclosure.

DETAILED DESCRIPTION

Various connections between elements are discussed in the following description. These connections are general and, unless specified otherwise, may be for example direct or indirect, wired or wireless, and this specification is not intended to be limiting in this respect.

In the following description of various illustrative embodiments, reference is made to the accompanying drawings, which form a part hereof, and in which is shown, by way of illustration, various embodiments in which aspects of the disclosure may be practiced. It is to be understood that other embodiments may be utilized and structural and functional modifications may be made, without departing from the scope of the present disclosure.

FIG. 1 illustrates an example information distribution network 100 on which many of the various features described herein may be implemented. Network 100 may be any type of information distribution network, such as satellite, telephone, cellular, wireless, etc. One example may be an optical fiber network, a coaxial cable network or a hybrid fiber/coax distribution network. Such networks 100 use a series of interconnected communication lines 101 (e.g., coaxial cables, optical fibers, wireless, etc.) to connect multiple premises 102 (e.g., businesses, homes, consumer dwellings, etc.) to a central office or headend 103. The central office 103 may transmit downstream information signals onto the lines 101, and each premises 102 may have a receiver used to receive and process those signals.

There may be one line 101 originating from the central office 103, and it may be split a number of times to distribute the signal to various premises 102 in the vicinity (which may be many miles) of the central office 103. The lines 101 may include components not illustrated, such as splitters, filters, amplifiers, etc. to help convey the signal clearly, but in general each split introduces a bit of signal degradation. Portions of the lines 101 may also be implemented with fiber-optic cable, while other portions may be implemented with coaxial cable, other lines, or wireless communication paths.

The central office 103 may include a termination system (TS) 104, such as a cable modem termination system (CMTS), which may be a computing device configured to manage communications between devices on the network of lines 101 and backend devices such as servers 105-107 (to be discussed further below). The termination system (TS) may be as specified in a standard, such as the Data Over Cable Service Interface Specification (DOCSIS) standard, published by Cable Television Laboratories, Inc. (a.k.a. CableLabs), or it may be a similar or modified device instead. The termination system (TS) may be configured to place data on one or more downstream frequencies to be received by modems at the various premises 102, and to receive upstream communications from those modems on one or more upstream frequencies. The central office 103 may also include one or more network interfaces 108, which can permit the central office 103 to communicate with various other external networks 109. These networks 109 may include, for example, networks of Internet devices, telephone networks, cellular telephone networks, fiber optic networks, local wireless networks (e.g., WiMAX), satellite networks, and any other desired network, and the interface 108 may include the corresponding circuitry needed to communicate on the network 109, and to other devices on the network such as a cellular telephone network and its corresponding cell phones.

As noted above, the central office 103 may include a variety of servers 105-107 that may be configured to perform various functions. For example, the central office 103 may include a push notification server 105. The push notification server 105 may generate push notifications to deliver data and/or commands to the various premises 102 in the network (or more specifically, to the devices in the premises 102 that are configured to detect such notifications). The central office 103 may also include a content server 106. The content server 106 may be one or more computing devices that are configured to provide content to users in the homes. This content may be, for example, video on demand movies, television programs, songs, text listings, etc. The content server 106 may include software to validate user identities and entitlements, locate and retrieve requested content, encrypt the content, and initiate delivery (e.g., streaming) of the content to the requesting user and/or device.

The central office 103 may also include one or more application servers 107. An application server 107 may be a computing device configured to offer any desired service, and may run various languages and operating systems (e.g., servlets and JSP pages running on Tomcat/MySQL, OSX, BSD, Ubuntu, Redhat, HTML5, JavaScript, AJAX and COMET). For example, an application server may be responsible for collecting television program listings information and generating a data download for electronic program guide or interactive program guide listings. Another application server may be responsible for monitoring user viewing habits and collecting that information for use in selecting advertisements. Another application server may be responsible for formatting and inserting advertisements in a video stream being transmitted to the premises 102. Another application server may be responsible for receiving user remote control commands, and processing them to provide an intelligent remote control experience.

An example premises 102 a may include an interface 120. The interface 120 may comprise, in one aspect, a modem 110, which may include transmitters and receivers used to communicate on the lines 101 and with the central office 103. The modem 110 may be, for example, a coaxial cable modem (for coaxial cable lines 101), a fiber interface node (for fiber optic lines 101), or any other desired modem device. The modem 110 may be connected to, or be a part of, a gateway interface device 111. The gateway interface device 111 may be a computing device that communicates with the modem 110 to allow one or more other devices in the premises 102 a to communicate with the central office 103 and other devices beyond the central office. The gateway 111 may be a set-top box (STB), digital video recorder (DVR), computer server, or any other desired computing device. The gateway 111 may also include (not shown) local network interfaces to provide communication signals to devices in the premises 102 a, such as televisions 112, additional STBs 113, personal computers 114, laptop computers 115, wireless devices 116 (wireless laptops and netbooks, mobile phones, mobile televisions, personal digital assistants (PDA), etc.), and any other desired devices. Examples of the local network interfaces include Multimedia Over Coax Alliance (MoCA) interfaces, Ethernet interfaces, universal serial bus (USB) interfaces, wireless interfaces (e.g., IEEE 802.11), Bluetooth interfaces, and others. In some embodiments, a client device 117 may communication with central office 103 via one or more communication interfaces, such as network interface 108 and network 109.

FIG. 2 illustrates general hardware elements that can be used to implement any of the various computing devices discussed above. The computing device 200 may include one or more processors 201, which may execute instructions of a computer program to perform any of the features described herein. The instructions may be stored in any type of computer-readable medium or memory, to configure the operation of the processor 201. For example, instructions may be stored in a read-only memory (ROM) 202, random access memory (RAM) 203, removable media 204, such as a Universal Serial Bus (USB) drive, compact disk (CD) or digital versatile disk (DVD), floppy disk drive, or any other desired electronic storage medium. Instructions may also be stored in an attached (or internal) hard drive 205. The computing device 200 may include one or more output devices, such as a display 206 (or an external television), and may include one or more output device controllers 207, such as a video processor. There may also be one or more user input devices 208, such as a remote control, keyboard, mouse, touch screen, microphone, etc. The computing device 200 may also include one or more network interfaces, such as input/output circuits 209 (such as a network card) to communicate with an external network 210. The network interface may be a wired interface, wireless interface, or a combination of the two. In some embodiments, the interface 209 may include a modem (e.g., a cable modem), and network 210 may include the communication lines 101 discussed above, the external network 109, an in-home network, a provider's wireless, coaxial, fiber, or hybrid fiber/coaxial distribution system (e.g., a DOCSIS network), or any other desired network.

Aspects of this disclosure may be implemented to interface communications between two or more network or communications systems. In some embodiments, an exchange of messages and/or data may be used to facilitate the communications. In some embodiments, an address associated with one or more client devices may be obtained to associate the client device(s) with one or more tunnels.

FIG. 3 illustrates an architecture demonstrating one or more aspects of this disclosure. In some embodiments, the various blocks shown in FIG. 3 may be included in, associated with, or implemented in accordance with one or more of the components and devices described above in connection with FIGS. 1-2.

A source 302 may generate or otherwise transmit data. The data may be indicative of one or more content items, such as audio content, voice (e.g., VoIP), video content, graphics, pictures, text, emails, instant messages, etc. In some embodiments, source 302 may be associated with central office 103 or servers 105-107 of FIG. 1. In some embodiments, source 302 may include one or more VOD servers configured to deliver video using IPv4.

A network 308 may include one or more communication or data access networks. In some embodiments, network 308 may adhere to a first communication type, such as IPv4 communications. Network 308 may convey data received from source 302, or data generated by network 308, to one or more devices as described further below. In some embodiments, network 308 may be associated with network 109 of FIG. 1 or network 210 of FIG. 2.

A computing device such as a router 314, such as an Address Family Transition Router (AFTR), may function as a proxy to deliver one or more messages, such as an Internet Group Management Protocol (IGMP) message, to one or more devices, such as one or more routers. For example, router 314 may deliver a message from users behind an element 326 to a first-hop IPv4 multicast router upstream of router 314. In some embodiments, router 314 and/or element 326 may be associated with central office 103 or interface 120 of FIG. 1. In some embodiments, element 326 may comprise a broadband element, such as a Basic Bridging BroadBand element (B4).

In some embodiments, router 314 may be included as a bridge to join both IPv4 and IPv6 multicast (or another transmission scheme) distribution trees. For example, router 314 may replicate IPv4 multicast streams into IPv4-in-IPv6 streams in one or more branches of an IPv6 multicast distribution stream. In some embodiments, router 314 may build or reference a translation tool, such as a mapping table, that maps element 326's IPv6 addresses and multicast groups. The table may function as an access table to, for example, match a multicast enrollment or subscription to element 326.

In some embodiments, router 314 may function to translate an IPv4 multicast address to an IPv6 multicast address and use join messages (e.g. PIM-JOIN) to join both the IPv4 and IPv6 multicast (or another transmission scheme) distribution trees. For example, router 314 may take the IPv6 multicast address from the PIM message sent by a router in network 320 and translate the IPv6 multicast address to the IPv4 multicast address. Router 314 may use the IPv4 multicast address to send the PIM message to a next-hop router in network 308.

A network 320 may include one or more communication or data access networks. In some embodiments, network 320 may adhere to a second communication type, such as IPv6 communications. In some embodiments, network 320 may be associated with network 109 of FIG. 1 or network 210 of FIG. 2.

In some embodiments, element 326 may be included in (e.g., embedded in), or otherwise associated with, a client device, such as a user or client device 332. In some embodiments, element 326 may enforce an Internet Group Management Protocol—Multicast Listener Discovery (IGMP-MLD) interworking function together with a de-capsulation function of received multicast IPv4-in-IPv6 packets. For example, element 326 may perform a listener portion of an Internet Group Management Protocol (IGMP) and a host portion of a Multicast Listener Discovery (MLD) protocol on an upstream interface. As a skilled artisan would appreciate, IGMP may be used in connection with IPv4 groups (e.g., multicast groups) and MLD may be used in connection with IPv6 groups (e.g., multicast groups). IGMP and MLD may be used between end systems to request or otherwise communicate data.

User device 332 may include one or more components for communicating with one or more devices, such as source 302. For example, in some embodiments user device 332 may be within a service node or group, such as a logical service group, associated with source 302. In some embodiments, client device may adhere to one or more communication types. For example, user device 332 may communicate according to IPv6. In some embodiments, user device 332 may be associated with devices 112-117 of FIG. 1 or device 200 of FIG. 2. In some embodiments, user device 332 may include an IP-TV set-top box configured to receive a multicast stream from source 302 in IPv4.

The architecture of FIG. 3 is illustrative. In some embodiments, other architectures or variations of the architecture shown in FIG. 3 may be used. The various blocks of FIG. 3 may be arranged in any way, and any number of communication paths may exist between or amongst the various blocks. By way of illustration, the dashed lines in FIG. 3 may represent alternative communication paths between source 302 and router 314, network 320, element 326, and/or user device 332. Thus, using one or more of the dashed communication paths, source 302 may communicate with one or more of router 314, network 320, element 326, and/or user device, potentially bypassing network 308. Other communication paths (not shown in FIG. 3) may be used by one or more of the blocks shown in FIG. 3.

FIG. 4 illustrates a method that may be used in conjunction with one or more aspects of this disclosure. The method of FIG. 4 may be operative in connection with one or more architectures or environments. The method of FIG. 4 is described below in connection with the architecture of FIG. 3 for illustrative purposes only. The method may be adapted to accommodate other environments or architectures.

The method of FIG. 4 may be used as a proxy for encapsulating IPv4 packets or traffic into IPv6 packets or traffic, or vice versa. For example, a device (e.g., device 332 of FIG. 3) behind an element or device (e.g., element 326 of FIG. 3) may only have an IPv6 address (as opposed to an IPv4 address) associated with it, potentially due to a lack of available IPv4 addresses or other reasons. The method of FIG. 4 may be used to realize an expansion of a network address space (e.g., IPv4 to IPv6 compliant communication) without having to fully implement a more advanced communication type (e.g., IPv6).

In step 404, user device 332 may transmit one or more messages. The one or more messages may be indicative of a request for service, such as a request for a content item or asset. The one or more messages may be transmitted in response to a user of device 332 indicating that the user wants to join or subscribe to a group, such as an IPv4 multicast group. The one or more messages may comprise an IGMP message. The one or more messages may be generated by device 332. The one or more messages may comprise one or more control messages.

In step 410, a network device such as element 326 may receive one or more messages, such as a message transmitted by user device 332, in connection with step 404. Element 326 may encapsulate the one or more messages with a header, such as an IPv6 header. Element 326 may convert one or more messages into a report message, such as an MLD report message. Element 326 may transmit the MLD report message upstream, e.g., towards source 302.

In step 416, a join message may be triggered or generated. For example, a join message (e.g., a PIM-JOIN) may be triggered by an MLD querier or another entity (not shown in FIG. 3) in response to receiving the MLD report message. In some embodiments, the join message may be indicative of a communication type, such as IPv6. The join message may be transmitted to one or more devices or entities.

In step 422, the join message of step 416 may be received by one or more entities. For example, the join message may be received by a computing device, such as a router 314. Router 314 may extract a group address (e.g., an IPv4 multicast group address) from the join message and may transmit the join message, or a portion thereof, upstream, e.g., toward source 302. In this regard, communications between router 314 and devices upstream from router 314 (e.g., source 302) may adhere to a first communication type (e.g., IPv4), and communications between router 314 and devices downstream from router 314 (e.g., user device 332) may adhere to a second communication type (e.g., IPv6).

In step 428, source 302 (or another entity not shown in FIG. 3) may receive the join message, or a portion thereof, transmitted in connection with step 422. In response to the message, source 302 (or another entity) may provide service to user device 332. For example, as part of step 428, source 302 (or another entity) may enroll user device 332 in a service group, provide or transmit a content item or asset, etc.

In step 434, source 302 may transmit data to router 314. The data may be transmitted in response to the (portion of the) join message received in connection with step 428. The transmitted data may fulfill a service request initiated by user device 332 (e.g., where the service request may be indicated by one or more of the messages transmitted in connection with step 404).

In step 440, router 314 may receive the data transmitted in connection with step 434 and may prepare the data for transmission over network 320, where network 320 may adhere to IPv6 communications.

In some embodiments, as part of step 440, router 314 may associate one or more tunnel interfaces, such as logical tunnel interfaces, to create a multicast tunnel or channel, or a unicast tunnel or channel, or another type of communication/transmission path. One or more devices may encapsulate data packets according to a first communication type (e.g., IPv4) into packets of a second communication type (e.g., IPv6). One or more devices may transmit the encapsulated data packets according to the second communication type to one or more other devices, such as a downstream multicast enabled router configured in accordance with the second communication type, via the tunnel.

In some embodiments, data received at router 314 from an upstream device (e.g., source 302) may include an indication of the tunnel itself or an intended destination (e.g., user device 332, or an address of user device 332). Responsive to receiving data with such an indication, router 314 may convert such data to a particular communication type (e.g., IPv6) and transmit the data to the destination device(s) in that form. Router 314 may maintain a table in memory to facilitate mapping a destination device to one or more tunnels or channels. For example, router 314 may maintain a mapping of an address associated with a destination device to one or more tunnels or channels.

The method of FIG. 4 is illustrative. In some embodiments, some of the steps (or portions thereof) may execute in an order different from what is shown. In some embodiments, some of the steps (or portions thereof) may be optional. In some embodiments, one or more additional steps not shown may be included.

While some examples have been described above in the context of Internet Protocol (IP) technology and communications, aspects of this disclosure may readily be applied to other forms and types of communication. The various forms of communication may be operative in connection with one or more television networks, computer networks, satellite networks, cellular networks, etc., in any potential combination.

Although not required, various aspects described herein may be embodied as a method, a system, an apparatus, and/or as a transitory and/or non-transitory computer-readable medium storing executable instructions. Accordingly, those aspects may take the form of an entirely hardware embodiment, an entirely software embodiment, an entirely firmware embodiment, or an embodiment combining software, firmware, and/or hardware. The functionality may be resident in a single computing device or application, or may be distributed across multiple computing devices/platforms or applications, the multiple computing devices/platforms optionally being connected to one another via one or more networks. Moreover, the structural components described herein may be distributed amongst one or more devices, optionally within a common housing or casing.

Various signals representing content, data, or events as described herein may be transferred between a source and a destination in the form of electromagnetic waves traveling through signal-conducting media such as metal wires, optical fibers, and/or wireless transmission media (e.g., air and/or space).

The methods and processes described herein may be tied to particular machines or apparatuses. For example, as described herein, a router may interface communications between two or more entities using two or more communication types. More generally, one or more apparatuses may include one or more processors and memory storing instructions that, when executed by the one or more processors, cause the one or more apparatuses to perform the methodological acts and processes described herein. Furthermore, the methodological acts and processes described herein may perform a variety of functions including transforming an article (e.g., messages and/or data in accordance with a first communication type) into a different state or thing (e.g., messages and/or data in accordance with a second communication type).

Aspects of the disclosure have been described in terms of illustrative embodiments thereof. While illustrative systems and methods as described herein embodying various aspects of the present disclosure are shown, it will be understood by those skilled in the art, that the disclosure is not limited to these embodiments. Modifications may be made by those skilled in the art, particularly in light of the foregoing teachings. For example, each of the features of the aforementioned illustrative examples may be utilized alone or in combination or subcombination with elements of the other examples. For example, any of the above described systems and methods or parts thereof may be combined with the other methods and systems or parts thereof described above in any order. It will also be appreciated and understood that modifications may be made without departing from the true spirit and scope of the present disclosure. The description is thus to be regarded as illustrative instead of restrictive on the present disclosure. 

1. (canceled)
 2. A method comprising: receiving, by a computing device, a first join message indicative of a request by a first client device, of a plurality of client devices, to join a multicast group, wherein the first join message complies with a first communication protocol; generating, by the computing device and based on the first join message, a converted first join message that complies with a second communication protocol, wherein the second communication protocol is associated with the multicast group and is different from the first communication protocol; sending, by the computing device and to a source associated with the multicast group, the converted first join message; receiving, by the computing device and from the source associated with the multicast group, a first response that is responsive to the converted first join message and that comprises an indication of a first channel of a plurality of channels; generating, by the computing device and based on the first response, a converted first response that complies with the first communication protocol; and based on the indication of the first channel and a map indicative of associations between the plurality of channels and the plurality of client devices, sending, by the computing device, to the first client device, and using the first channel, the converted first response.
 3. The method of claim 2, wherein the first communication protocol comprises a first version of internet protocol, and wherein the second communication protocol comprises a second version of internet protocol.
 4. The method of claim 2, further comprising: in response to receiving a second response comprising an address of the first client device, generating, based on the second response, a converted second response that complies with the first communication protocol; and based on the address of the first client device and the map, sending, by the computing device, to the first client device, and using the first channel, the converted second response.
 5. The method of claim 2, further comprising: in response to receiving a second join message that complies with the first communication protocol and is indicative of a request by the first client device to join a different multicast group, sending, to a source associated with the different multicast group, a converted second join message that complies with the second communication protocol; and in response to receiving a second response complying with the second communication protocol, sending, to the first client device, a converted second response that complies with the first communication protocol.
 6. The method of claim 2, further comprising: encapsulating the first join message with a header associated with the second communication protocol to generate the converted first join message.
 7. An apparatus comprising: one or more processors; and memory storing instructions that, when executed by the one or more processors, cause the apparatus to: receive a first join message indicative of a request by a first client device, of a plurality of client devices, to join a multicast group, wherein the first join message complies with a first communication protocol; generate, based on the first join message, a converted first join message that complies with a second communication protocol, wherein the second communication protocol is associated with the multicast group and is different from the first communication protocol; send, to a source associated with the multicast group, the converted first join message; receive, from the source associated with the multicast group, a first response that is responsive to the converted first join message and that comprises an indication of a first channel of a plurality of channels; generate, based on the first response, a converted first response that complies with the first communication protocol; and based on the indication of the first channel and a map indicative of associations between the plurality of channels and the plurality of client devices, send, to the first client device and using the first channel, the converted first response.
 8. The apparatus of claim 7, wherein the first communication protocol comprises a first version of internet protocol, and wherein the second communication protocol comprises a second version of internet protocol.
 9. The apparatus of claim 7, wherein the instructions, when executed by the one or more processors, cause the apparatus to: in response to receiving a second response comprising an address of the first client device, generate, based on the second response, a converted second response that complies with the first communication protocol; and based on the address of the first client device and the map, send, to the first client device and using the first channel, the converted second response.
 10. The apparatus of claim 7, wherein the instructions, when executed by the one or more processors, cause the apparatus to: in response to receiving a second join message that complies with the first communication protocol and is indicative of a request by the first client device to join a different multicast group, send, to a source associated with the different multicast group, a converted second join message that complies with the second communication protocol; and in response to receiving a second response complying with the second communication protocol, send, to the first client device, a converted second response that complies with the first communication protocol.
 11. The apparatus of claim 7, wherein the instructions, when executed by the one or more processors, cause the apparatus to: encapsulate the first join message with a header associated with the second communication protocol to generate the converted first join message.
 12. A system comprising: a computing device configured to: receive a first join message indicative of a request to join a multicast group by a first client device of a plurality of client devices, wherein the first join message complies with a first communication protocol; generate, based on the first join message, a converted first join message that complies with a second communication protocol, wherein the second communication protocol is associated with the multicast group and is different from the first communication protocol; send, to a source associated with the multicast group, the converted first join message; receive, from the source associated with the multicast group, a first response that is responsive to the converted first join message and that comprises an indication of a first channel of a plurality of channels; generate, based on the first response, a converted first response that complies with the first communication protocol; and based on the indication of the first channel and a map indicative of associations between the plurality of channels and the plurality of client devices, send, to the first client device and using the first channel, the converted first response; and the first client device configured to: send the request to join the multicast group; and receive the converted first response.
 13. The system of claim 12, wherein the first communication protocol comprises a first version of internet protocol, and wherein the second communication protocol comprises a second version of internet protocol.
 14. The system of claim 12, wherein the computing device is configured to: in response to receiving a second response comprising an address of the first client device, generate, based on the second response, a converted second response that complies with the first communication protocol; and based on the address of the first client device and the map, send, to the first client device and using the first channel, the converted second response.
 15. The system of claim 12, wherein the computing device is configured to: in response to receiving a second join message that complies with the first communication protocol and is indicative of a request by the first client device to join a different multicast group, send, to a source associated with the different multicast group, a converted second join message that complies with the second communication protocol; and in response to receiving a second response complying with the second communication protocol, send, to the first client device, a converted second response that complies with the first communication protocol.
 16. The system of claim 12, wherein the computing device is configured to: encapsulate the first join message with a header associated with the second communication protocol to generate the converted first join message.
 17. A method comprising: receiving, by a computing device, a first join message indicative of a request by a first client device, of a plurality of client devices, to join a multicast group, wherein the first join message complies with a first communication protocol; generating, by the computing device and based on the first join message, a converted first join message that complies with a second communication protocol, wherein the second communication protocol is associated with the multicast group and is different from the first communication protocol; sending, by the computing device and to a source associated with the multicast group, the converted first join message; receiving, by the computing device and from the source associated with the multicast group, a first response that is responsive to the converted first join message and that comprises an address of the first client device; generating, by the computing device and based on the first response, a converted first response that complies with the first communication protocol; and based on the address of the first client device and a map indicative of associations between a plurality of channels and the plurality of client devices, sending, by the computing device, to the first client device, and using a first channel of the plurality of channels, the converted first response.
 18. The method of claim 17, wherein the first communication protocol comprises a first version of internet protocol, and wherein the second communication protocol comprises a second version of internet protocol.
 19. The method of claim 17, further comprising: in response to receiving a second response comprising an indication of the first channel, generating, based on the second response, a converted second response that complies with the first communication protocol; and based on the indication of the first channel and the map, sending, by the computing device, to the first client device, and using the first channel, the converted second response.
 20. The method of claim 17, further comprising: in response to receiving a second join message that complies with the first communication protocol and is indicative of a request by the first client device to join a different multicast group, sending, to a source associated with the different multicast group, a converted second join message that complies with the second communication protocol; and in response to receiving a second response complying with the second communication protocol, sending, to the first client device, a converted second response that complies with the first communication protocol.
 21. The method of claim 17, further comprising: encapsulating the first join message with a header associated with the second communication protocol to generate the converted first join message.
 22. An apparatus comprising: one or more processors; and memory storing instructions that, when executed by the one or more processors, cause the apparatus to: receive a first join message indicative of a request by a first client device, of a plurality of client devices, to join a multicast group, wherein the first join message complies with a first communication protocol; generate, based on the first join message, a converted first join message that complies with a second communication protocol, wherein the second communication protocol is associated with the multicast group and is different from the first communication protocol; send, to a source associated with the multicast group, the converted first join message; receive, from the source associated with the multicast group, a first response that is responsive to the converted first join message and that comprises an address of the first client device; generate, based on the first response, a converted first response that complies with the first communication protocol; and based on the address of the first client device and a map indicative of associations between a plurality of channels and the plurality of client devices, send, to the first client device and using a first channel of the plurality of channels, the converted first response.
 23. The apparatus of claim 22, wherein the first communication protocol comprises a first version of internet protocol, and wherein the second communication protocol comprises a second version of internet protocol.
 24. The apparatus of claim 22, wherein the instructions, when executed by the one or more processors, cause the apparatus to: in response to receiving a second response comprising an indication of the first channel, generate, based on the second response, a converted second response that complies with the first communication protocol; and based on the indication of the first channel and the map, send, to the first client device and using the first channel, the converted second response.
 25. The apparatus of claim 22, wherein the instructions, when executed by the one or more processors, cause the apparatus to: in response to receiving a second join message that complies with the first communication protocol and is indicative of a request by the first client device to join a different multicast group, send, to a source associated with the different multicast group, a converted second join message that complies with the second communication protocol; and in response to receiving a second response complying with the second communication protocol, send, to the first client device, a converted second response that complies with the first communication protocol.
 26. A system comprising: a computing device configured to: receive a first join message indicative of a request by a first client device, of a plurality of client devices, to join a multicast group, wherein the first join message complies with a first communication protocol; generate, based on the first join message, a converted first join message that complies with a second communication protocol, wherein the second communication protocol is associated with the multicast group and is different from the first communication protocol; send, to a source associated with the multicast group, the converted first join message; receive, from the source associated with the multicast group, a first response that is responsive to the converted first join message and that comprises an address of the first client device; generate, based on the first response, a converted first response that complies with the first communication protocol; and based on the address of the first client device and a map indicative of associations between a plurality of channels and the plurality of client devices, send, to the first client device and using a first channel of the plurality of channels, the converted first response; and the first client device configured to: send the request to join the multicast group; and receive the converted first response.
 27. The system of claim 26, wherein the first communication protocol comprises a first version of internet protocol, and wherein the second communication protocol comprises a second version of internet protocol.
 28. The system of claim 26, wherein the computing device is configured to: in response to receiving a second response comprising an indication of the first channel, generate, based on the second response, a converted second response that complies with the first communication protocol; and based on the indication of the first channel and the map, send, to the first client device and using the first channel, the converted second response.
 29. The system of claim 26, wherein the computing device is configured to: in response to receiving a second join message that complies with the first communication protocol and is indicative of a request by the first client device to join a different multicast group, send, to a source associated with the different multicast group, a converted second join message that complies with the second communication protocol; and in response to receiving a second response complying with the second communication protocol, send, to the first client device, a converted second response that complies with the first communication protocol. 